草庐IT

python DEAP遗传算法多核速度

全部标签

java - 通过剪切任意角度旋转(Paeth算法)

我正在尝试编写3剪切旋转算法的Java实现describedbyAlanPaeth.问题不在于值的计算,而在于将旋转的点拟合到图像网格上。在论文中,旋转是由以下计算给出的3个连续剪切执行的:x=x+α*yy=y+beta*xx=x+alpha*yAlpha和Beta是根据给定的角度(theta;以弧度为单位)通过以下公式计算得出的:beta=sin(theta)alpha=-tan(theta/2)使用这些公式,点围绕坐标系的中心旋转。为了更正负值,我将各自轴的最小计算坐标添加到每个点,以便最小值始终为0。到目前为止我的Java实现:ShiftPoint[]val=newShiftPo

java - 不了解中位数算法的中位数来查找第 k 个元素

下面是我的代码,用于尝试理解中位数算法的中位数(使用大小为5的block)。我了解如何获取输入的中位数,但我不确定如何对block进行编码以继续递归输入,直到我得到中位数为止。然后在得到那个中位数之后,我不确定如何将它用作一个枢轴来丢弃无用的信息来划分输入。getMediansArray返回一个大小为ceil(input.length/5)的数组,而getMedians仅返回数组的中位数(仅用于长度publicstaticint[]findKthElement(int[]input,intk){intnumOfMedians=(int)Math.ceil(input.length/5.

java - 如何表示遗传算法中时间表问题的时间表?

对于遗传算法,通常基因符号如下:PARENT1:101101010101001001001001110011100110101011101101PARENT2:010100111011010101110101001001101011001010010110所以交叉,突变可以像这样用这种表示来完成:选择交叉点:PARENT1:101101010101001001001001110011100110101011101101PARENT2:010100111011010101110101001001101011001010010110执行交叉产生一个child:CHILD:101101010

java - 带有 native 代码的多核 Java 程序

我在Java程序中使用nativeC++库。Java程序是为使用多核系统而编写的,但它无法扩展:最好的速度是在6个内核左右,即添加更多内核会减慢速度。我的测试表明,对native代码的调用本身会导致问题,因此我想确保不同的线程访问native库的不同实例,从而消除并行任务之间的任何隐藏(内存)依赖性。换句话说,而不是静态blockstatic{System.loadLibrary("theNativeLib");}我想为每个线程动态加载库的多个实例。主要的问题是这是否可能。然后怎么做!注意事项:-我在Java7fork/join以及Scala/akka中都有实现。因此,感谢每个平台的任

java - Canny 算法 : Hysteresis Mal-function

我正在编写Canny算法,我似乎遇到了滞后问题。阈值似乎在处理,但我的滞后似乎根本不起作用。以及出于某种奇怪原因删除弱的方法。请帮忙!低@10高@75在Hysteresis之后,对于问题A,没有使用performHysteresis方法加强边缘;Bweaknon-edges没有用removeWeak方法移除。方法源码如下:importjava.awt.image.BufferedImage;importjava.awt.image.ConvolveOp;importjava.awt.image.Kernel;classCannyMethod{privatestaticfinalfloa

java - 改进去除元素的算法

问题给定一个字符串s和m查询。对于每个查询,删除第K个字符x。例如:abcdbcaab52a1c1d3b2aAnsabbc我的方法我正在使用BIT树进行更新操作。代码:for(inti=0;i时间复杂度是O(MlogN),其中N是字符串ss的长度。问题我的解决方案显示超出时间限制错误。我该如何改进它?publicstaticvoidupdate(inti,intvalue,int[]arr,intxx){while(i0){ans+=arr[i];i-=(i&-i);}returnans;} 最佳答案 有一些关键操作未显示,很可能其

零基础学算法100天第2天——bellman-ford(边数限制最短路算法)

⭐️引言⭐️                大家好啊,我是执梗。今天是零基础学算法一百天的第2天,本次我们讲解的是bellman-ford算法。上一次我们提到了最短路算法是有好几种的,不同的算法不仅适用的场景不同,而且复杂度也不同,选择不适很可能会MLE或TLE,今天我们讲解的是bellman-ford算法,这还是非常重要的,模板非常容易记下来。⭐️精彩回放⭐️零基础学算法第一天零基础学算法一百天第1天——Dijkstra(图解最短路算法)📒博客首页:执梗的博客🎉欢迎关注🔎点赞👍收藏⭐️留言📝❤️:热爱Java与算法学习,期待一起交流!🙏作者水平很有限,如果发现错误,求告知,多谢!🌺有问题可私

【数据结构和算法】使用数组的结构实现链表(单向或双向)

上文我们通过结构体的结构实现了队列、以及循环队列的实现,我们或许在其他老师的教学中,只学到了用结构体的形式来实现链表、队列、栈等数据结构,本文我想告诉你的是,我们可以使用数组的结构实现链表、单调栈、单调队列目录前言一、用数组结构的好处1.数组的优缺点2.链表的优缺点3.总结二、用数组实现链表1.认识构造、初始化2.将x插入到头结点3.将x插入到第k次插入数值之后的位置4.删除第k次插入的结点三、完整代码演示四、数组实现双向链表1.初始化2.在第k次插入的点的右边插入x3.删除第k个点五、完整代码前言你之前实现链表的形式,是不是这一种结构来实现typedefstructListNode{ int

c# - Soundex 算法的一些变化

此算法设置为遍历第一个单词或直到它填满四个编码字符串。例如,输入“HorribleGreat”的结果是:H612。它忽略了第二个单词,换句话说,它只用第二个单词的第一个字母来填充编码字符串。我想通过获取第一个单词并找到其编码字符串然后获取第二个单词并找到其编码字符串来更改它;输出应为“H614G600”。我想知道是否有办法通过对**此代码进行一些更改来做到这一点。非常感谢:)privatestringSoundex(stringdata){StringBuilderresult=newStringBuilder();if(data!=null&&data.Length>0){strin

java - 使用优先级队列的 Prims 算法的复杂性?

我用的是邻接矩阵,优先队列是数据结构。根据我的计算,复杂度是V^3logV:While循环:V检查相邻顶点:V如果条目已经存在则检查队列,并更新相同的条目:Vlogv但是,我到处都读到复杂度是V^2请解释。 最佳答案 如果你使用斐波那契堆,那么提取最小值是O(lgV)摊余成本并更新其中的条目是O(1)摊销。如果我们使用这个伪代码whilepriorityQueuenotemptyu=priorityQueue.exractMin()foreachvinu.adjacenciesifpriorityQueue.contains(v)a